mod handler;
use crate::handler::{
    async_bf_all, bb_all, dd_all, enum_all, json_all, obj_all, task_all, test_all,
};

#[tokio::main]
async fn main() {
    // json
    json_all::demo();

    // 枚举
    enum_all::demo0();
    enum_all::demo1();
    enum_all::demo2(2).await; // true
    enum_all::demo2(10).await; // cont is null
    enum_all::demo3("zdc").await; // no found name.
    enum_all::demo3("zds").await; // name is ok.
    enum_all::demo3_file("/Users/zhangds/IOT/rust/demo/test.md").await;

    // obj
    obj_all::demo_obj_pack(); // 封装
    obj_all::demo_obj_extend(); // 继承
    obj_all::demo_obj_all_state(); // 多态

    // 闭包
    bb_all::create_bb();
    bb_all::create_bb2();
    bb_all::create_bb3();
    bb_all::create_bb4();
    bb_all::create_bb5();
    bb_all::create_bb6();
    // 闭包 2次理解
    bb_all::create_bb1_1();
    bb_all::create_bb1_2();
    bb_all::create_bb1_3();

    // 迭代器
    dd_all::create_dd1();
    dd_all::create_dd2();
    dd_all::create_dd3();
    dd_all::create_dd4();
    dd_all::create_dd5();
    dd_all::create_dd6();
    dd_all::create_dd7();

    // 异步控制
    // async_bf_all::create_async1().await;
    // async_bf_all::create_async2().await;

    // 并发
    // async_bf_all::create_bf1();

    // 定时任务
    // task_all::task_demo();
    // task_all::task_demo1();
    // task_all::task_demo2().await;
    // task_all::task_demo3().await;
    task_all::task_demo4().await;
}
